Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 11 из 11

Тема: [MZ] Что интересного можно делать с сохранениями

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Бывалый Аватар для Darchan Kaen
    Информация о пользователе
    Регистрация
    17.06.2013
    Адрес
    Одесса
    Сообщений
    851
    Записей в дневнике
    3
    Репутация: 47 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от id0 Посмотреть сообщение
    Дело в том, что у меня уже есть один плагин на сохранения, я боюсь, что будут конфликты. Я хочу в этом конкретно плагине исправить, чтобы первый слот был недоступен. Автосейвы я и вручную делал, они работали прекрасно, а вот какие строчки отвечают за сохранение из меню?
    По поводу совместимости ты прав.
    Для того, чтоб это сделать, я чуть модифицировал "дефолтный код" MV, если правильно помню, то за доступность и цвет слота сохранения отвечает вот эти фрагменты кода:

    Спойлер код:

    Код из плагина, с куском моей логики - вырывай её, если не нужна.
    Для большего понимания посмотри .js-файлы MV.

    Смысл в том, что на экране сохранения:
    1) При нажатии на слот движок (Сцена сохранения) должен проверять, доступен ли слот для сохранения.
    2) Если слот недоступен, движок (Окно сцены сохранения) отрисовывает его другим - серым - цветом.
    MV этого не делает, я основывался на подходе MZ.

    Код:
    //----MODIFY CORE-LIB //--РАСШИРЕНИЕ СТАНДАРТНОГО ФУНКЦИОНАЛА
    //--save process //--ДОСТУПНОСТЬ СЛОТА ДЛЯ СОХРАНЕНИЯ
    Scene_Save.prototype.onSavefileOk = function() {
        Scene_File.prototype.onSavefileOk.call(this);
    	
    	let savefileId =  this.savefileId();
    	
    	if( true === isSavefileEnabled(savefileId) ){
    		$gameSystem.onBeforeSave();
    		if (DataManager.saveGame(this.savefileId())) {
    			this.onSaveSuccess();
    			
    			let saveSlotsStatusesList = $gameVariables.value(saveSlotsStatusesListVarId) || [];
    			saveSlotsStatusesList.push( {slotId: savefileId, slotEnabled: true} );
    			$gameVariables.setValue(saveSlotsStatusesListVarId, saveSlotsStatusesList);
    			
    			//saveSlotsStatusesList.push( {slotId: savefileId, slotEnabled: true} );
    		} else {
    			this.onSaveFailure();
    		}
    	} else {
    		this.onSaveFailure();
    	}
        
    };
    
    
    //--save GUI //--ЦВЕТ СЛОТА ИСХОДЯ ИЗ ДОСТУПНОСТИ
    Window_SavefileList.prototype.drawItem = function(index) {
        var id = index + 1;
        var valid = DataManager.isThisGameFile(id);
    	
    	valid = isSavefileEnabled(id);
    	
        var info = DataManager.loadSavefileInfo(id);
        var rect = this.itemRectForText(index);
        this.resetTextColor();
        if (this._mode === 'load') {
            this.changePaintOpacity(valid);
        }
        this.drawFileId(id, rect.x, rect.y);
        if (info) {
            this.changePaintOpacity(valid);
            this.drawContents(info, rect, valid);
            this.changePaintOpacity(true);
        }
    };


    upd:
    Наверное, самый быстрый вариант для твоего плагина - контролировать доступность записи по savefileId в Scene_Save.prototype.onSavefileOk.
    Последний раз редактировалось Darchan Kaen; 28.07.2022 в 10:40.

Страница 2 из 2 ПерваяПервая 12

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
[MZ] Что интересного можно делать с сохранениями